using LF.Shared.Dtos.Input;
using LF.Shared.Dtos.Out;
using Microsoft.AspNetCore.Mvc;

namespace LF.Application.Services
{
    public interface IKnowledgeBaseService : IApplicationService
    {
        #region 知识库管理
        /// <summary>
        /// 获取知识库列表
        /// </summary>
        /// <param name="search">查询条件</param>
        /// <returns>知识库列表</returns>
        Result<KnowledgeBaseSearchOut> List(KnowledgeBaseSearch search);

        /// <summary>
        /// 获取知识库详情
        /// </summary>
        /// <param name="id">知识库ID</param>
        /// <returns>知识库信息</returns>
        Result<KnowledgeBaseOut> Detail(Guid id);

        /// <summary>
        /// 创建知识库
        /// </summary>
        /// <param name="knowledgeBase">知识库信息</param>
        /// <returns>操作结果</returns>
        Result Create(KnowledgeBaseOut knowledgeBase);

        /// <summary>
        /// 编辑知识库
        /// </summary>
        /// <param name="knowledgeBase">知识库信息</param>
        /// <returns>操作结果</returns>
        Result Update(KnowledgeBaseOut knowledgeBase);

        /// <summary>
        /// 删除知识库
        /// </summary>
        /// <param name="id">知识库ID</param>
        /// <returns>操作结果</returns>
        Result Delete(Guid id);

        /// <summary>
        /// 获取所有知识库
        /// </summary>
        /// <returns>所有知识库</returns>
        Result<List<KnowledgeBaseOut>> GetAll();
        #endregion

        #region 知识库文件管理
        /// <summary>
        /// 获取知识库文件列表
        /// </summary>
        /// <param name="search">查询条件</param>
        /// <returns>知识库文件列表</returns>
        Result<KnowledgeFileSearchOut> FileList(KnowledgeFileSearch search);

        /// <summary>
        /// 获取知识库文件详情
        /// </summary>
        /// <param name="id">知识库文件ID</param>
        /// <returns>知识库文件信息</returns>
        Result<KnowledgeFileOut> FileDetail(Guid id);

        /// <summary>
        /// 创建知识库文件
        /// </summary>
        /// <param name="knowledgeFile">知识库文件信息</param>
        /// <returns>操作结果</returns>
        Result FileCreate(KnowledgeFileOut knowledgeFile);

        /// <summary>
        /// 编辑知识库文件
        /// </summary>
        /// <param name="knowledgeFile">知识库文件信息</param>
        /// <returns>操作结果</returns>
        Result FileEdit(KnowledgeFileOut knowledgeFile);

        /// <summary>
        /// 删除知识库文件
        /// </summary>
        /// <param name="id">知识库文件ID</param>
        /// <returns>操作结果</returns>
        Result FileDelete(Guid id);
        #endregion
    }
} 